package appVeterinaria.negocio;

import java.util.Collection;
import appVeterinaria.dao.ClienteDAO;
import appVeterinaria.excepcion.DAOExcepcion;
import appVeterinaria.modelo.Cliente;
import appVeterinaria.modelo.Paciente;


public class GestionClientes {

	public Collection<Cliente> buscarPorNombreCliente(String nombres)
			throws DAOExcepcion {
		ClienteDAO dao = new ClienteDAO();
		return dao.buscarPorNombreCliente(nombres);
	}
	
	public Collection<Cliente> buscarPorNombreProspecto(String nombres)
			throws DAOExcepcion {
		ClienteDAO dao = new ClienteDAO();
		return dao.buscarPorNombreProspecto(nombres);
	}
	
	public Collection<Cliente> buscarPorCodigo(int idCliente)
			throws DAOExcepcion {
		ClienteDAO dao = new ClienteDAO();
		return dao.buscarPorCodigo(idCliente);
	}
	
	public Cliente insertar(int idCliente, String nombres, String apellidos, String email, int tlfCasa, int tlfMovil, String direccion, String imagen, boolean tipo, String observaciones) 
			throws DAOExcepcion {
		
	
		ClienteDAO dao = new ClienteDAO();

		Cliente vo = new Cliente();
		
		vo.setIdPersona(idCliente);
		vo.setNombres(nombres);
		vo.setApellidos(apellidos);
		vo.setEmail(email);
		vo.setTlfCasa(tlfCasa);
		vo.setTlfMovil(tlfMovil);		
		vo.setDireccion(direccion);
		vo.setImagen(imagen);
		vo.setTipo(tipo);
		vo.setObservaciones(observaciones);
		
		int total = dao.contar(email);
		if (total == 0) {
			return dao.insertar(vo);
		}
		else
			throw new DAOExcepcion("Email de cliente ya existe");
		
	}
	

	public Cliente obtener(int idPersona) throws DAOExcepcion {
		ClienteDAO dao = new ClienteDAO();
		return dao.obtener(idPersona);
	}

	public void eliminar(int idPersona) throws DAOExcepcion {
		ClienteDAO dao = new ClienteDAO();
		dao.eliminar(idPersona);
	}

	public Cliente actualizar(int idPersona, String nombres, String apellidos, String email, int tlfCasa, int tlfMovil, String direccion, String imagen, boolean tipo, String observaciones) throws DAOExcepcion {
		ClienteDAO dao = new ClienteDAO();

		Cliente vo = new Cliente();
		vo.setIdPersona(idPersona);
		vo.setNombres(nombres);
		vo.setApellidos(apellidos);
		vo.setEmail(email);
		vo.setTlfCasa(tlfCasa);
		vo.setTlfMovil(tlfMovil);
		vo.setDireccion(direccion);
		vo.setImagen(imagen);
		vo.setTipo(tipo);
		vo.setObservaciones(observaciones);
			
		int total = dao.contar(email);
		if (total == 0) {
			return dao.actualizar(vo);
		}
		else{
			if (vo.getEmail()==email){
				return dao.actualizar(vo);
			}else{
				throw new DAOExcepcion("Email de cliente ya existe");
			}
			
		}
								
		
	}

	public Collection<Cliente> listar() throws DAOExcepcion {
		ClienteDAO dao = new ClienteDAO();
		return dao.listar();
	}
	
	public Collection<Paciente> listarPacientesDeCliente(int idCliente) throws DAOExcepcion {
		ClienteDAO dao = new ClienteDAO();
			
		return dao.listarPacientesDeCliente(idCliente);	
				}
	
	public Cliente cambiarTipoCliente(int idPersona, boolean tipo) throws DAOExcepcion {
		ClienteDAO dao = new ClienteDAO();

		Cliente vo = new Cliente();
		vo.setIdPersona(idPersona);
		vo.setTipo(tipo);
	
		return dao.actualizar(vo);
	}
	
	public Collection<Cliente> listarClientePorTipo(boolean tipo) throws DAOExcepcion {
		ClienteDAO dao = new ClienteDAO();
		return dao.listarClientePorTipo(tipo);	
				}

}
